package pe.com.cotelasa.scp.dominio.servicio.impl;

import java.io.Serializable;
import java.util.Collection;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOContacto;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.service.IServicioContacto;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.entidad.Contacto;
import pe.com.cotelasa.scp.entidad.Empresa;
import pe.com.cotelasa.scp.entidad.Sede;

@Service
public class ServicioContactoImpl implements IServicioContacto, Serializable {

    @Inject
    private IDAOContacto daoContacto;

    @Override
    public Contacto obtenerContactoPorNombre(String nombre) throws ServiceException {
        try {

            return daoContacto.obtenerContactoPorNombre(nombre);

        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public Collection<Contacto> buscarContactosPorSede(Sede sede) throws ServiceException {
        try {
            return daoContacto.buscarContactosPorSede(sede);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }
    
    @Override
    public Collection<Contacto> buscarContactosPorSedeYTipo(Contacto contacto) throws ServiceException {
        try {
            return daoContacto.buscarContactosPorSedeYTipo(contacto);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public ResultadoServicio guardarContacto(Contacto contacto) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            //banco.setId(5);
            contacto.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            daoContacto.insertar(contacto);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }
    
    @Override
    public Collection<Contacto> buscarRepresentantePorEmpresa(Empresa empresa) throws ServiceException{
    	 try {
             return daoContacto.buscarRepresentantePorEmpresa(empresa);
         } catch (DAOException ex) {
             throw new ServiceException(ex.getMessage(), ex);
         }
    }
}
